home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / clipper / nannws22.zip / FISDIR.ASM < prev    next >
Assembly Source File  |  1987-12-08  |  3KB  |  97 lines

  1. ;**************************************
  2. ;Filename: fisdir.asm,.obj
  3. ;Author: Don L. Powells
  4. ;Purpose: To check to see if a specified directory path is valid
  5. ;Usage: ISDIR(expc)
  6. ;       where expc is a variable or literal string containing
  7. ;       a directory path
  8. ;Returns: Logical true if the directory exists or false if it
  9. ;         does not.
  10. ;Notes: The program receives a parameter from a Clipper program 
  11. ;       containing the directory path to be validated. It saves 
  12. ;       that segment:offset pair in ES and CX. It then gets the 
  13. ;       current directory path and saves it to the dir_buff. An 
  14. ;       attempt is made to change to the directory path being 
  15. ;       validated. If it is successful a true value is passed 
  16. ;       back to the Clipper program and the program changes back
  17. ;       to the original directory. Otherwise, it returns false.
  18. ;**************************************
  19.  
  20.  
  21. PUBLIC          ISDIR
  22.  
  23. EXTRN           _PARC:FAR
  24. EXTRN           _RETL:FAR
  25.  
  26.  
  27. CODESEG          SEGMENT BYTE    'PROG' ;PROG IS THE REQUIRED
  28.                  ASSUME  CS:CODESEG     ;CLASS CODE FOR AUTUMN 86
  29.                                         ;CLIPPER
  30.  
  31. ISDIR   PROC    FAR
  32.  
  33. ;INITIALIZATION PROCEDURE OF SAVING THE BASE POINTER AND REGISTERS
  34.         PUSH    BP
  35.         MOV     BP,SP
  36.  
  37.         PUSH    DS
  38.         PUSH    ES
  39.         PUSH    SI
  40.  
  41. ;GET PASSED PARAMETER
  42.         MOV     AX,1
  43.         PUSH    AX
  44.         CALL    _PARC
  45.         ADD     SP,2
  46.  
  47. ;SAVE ADDRESS IN ES:CX REGISTER PAIR
  48.         MOV     ES,AX
  49.         MOV     CX,BX
  50.  
  51. ;GET CURRENT DIRECTORY PATH NAME AND SAVE TO DIR_BUFF
  52.         MOV     AH,47H
  53.         MOV     DL,0
  54.         MOV     SI,SEG DIR_BUFF
  55.         MOV     DS,SI
  56.         MOV     SI,OFFSET DIR_BUFF
  57.         INT     21H
  58.  
  59. ; ATTEMPT TO CHANGE TO NEW DIRECTORY
  60.         PUSH    ES
  61.         POP     DS
  62.         MOV     DX,CX
  63.         MOV     AH,3BH
  64.         INT     21H
  65.  
  66.         MOV     CX,0    ;SET RETURN VALUE TO DEFAULT OF FALSE
  67.         JC      NOPATH
  68.  
  69. ; IF NEW DIRECTORY EXISTS SET RETURN VALUE TO TRUE AND RETURN TO
  70. ; ORIGINAL DIRECTORY
  71.         MOV     CX,1
  72.         MOV     AH,3BH
  73.         PUSH    CS
  74.         POP     DS
  75.         MOV     DX,OFFSET BK_SLASH
  76.         INT     21H
  77.  
  78. ;TERMINATION PROCEDURE
  79. NOPATH:
  80.         POP     SI
  81.         POP     ES
  82.         POP     DS
  83.         POP     BP
  84.  
  85. ;RETURN LOGICAL TRUE OR FALSE
  86.         MOV     AX,CX
  87.         PUSH    AX
  88.         CALL    _RETL
  89.         POP     AX
  90.         RET
  91. ISDIR           ENDP
  92. BK_SLASH        DB      '\'
  93. DIR_BUFF        DB      65 DUP(0)
  94.  
  95. CODESEG         ENDS
  96.                 END
  97.